Dynomotion

Group: DynoMotion Message: 12822 From: cnc_machines Date: 2/22/2016
Subject: Gantry Press

Greetings,


I am building a gantry which I would like to apply an even pressure all the way across. I am driving it with a ball screw on each end. I want to sync the ball screws to keep the gantry parallel, but also apply pressure (torque to the ball screws). Here is how I am thinking of doing it:


1. Snapamp Driving two steppers with encoders
2. Ball screw 1 driven in torque mode?

3. Ball screw 2 set to follow the position of ball screw 1?


My thinking is the pressure would be applied by the stepper in torque mode, everything would be kept square by the other motor matching its position. 


Would the snapamp be capable of doing this? I see you can configure a master and slave axis, but what I am describing sounds somewhat different. I would appreciate any suggestions - I am not stuck on this idea, but cant think of anything else.


Thanks,


Scott

Group: DynoMotion Message: 12827 From: Tom Kerekes Date: 2/22/2016
Subject: Re: Gantry Press
Hi Scott,

Stepper motors don't really have a torque mode like servo motors do.  They are more like positional devices where mechanical torque is unrelated to motor current.  Think of it like a fully energized electromagnet (pole position) pulling/holding the rotor to it.   Under no load or friction the rotor will align to the the pole position such that there will be no motor torque.  The rotor will be held to that position with a sort of spring force.  As the rotor moves away from the pole there will be a restoring force that increases as a sinusoidal function of distance.  At first the force will increase nearly linearly but then peak out (like a sinusoid) one full step away (1/200th of a motor rev).  Beyond that distance the force (torque) will begin to drop and eventually reverse as it becomes attracted to the next pole.  This is where a stepper stalls.

It wouldn't be very accurate but I suppose you could use the difference between the commanded and actual position as a measurement of the torque.

You might experiment with this by doing the following:

Slave the Axes and command the Master to some position.  Then apply a force to the gantry and observe the Axis Screen.  Record the difference between the Destinations and the Measured Positions.  The differences should be a function of the applied force.

Note that in Closed Loop Microstep mode the servo output will advance the commanded pole position to drive the rotor to the desired destination (zero error).  So in this case the Servo Output might be used determine the current torque level. 

If either of those work you might create a User program do something like:  Observe the current torques.  If the sum of both motors is below the desired torque increase the current Jog rate by an amount proportional to the torque error.  (This would also slow down if the torque was too high).

Another approach would be to make use of the capability of SnapAmp to drive a Stepper Motor as a "4 Phase" torque motor.  But to do this you will need to be able to set up the commutation and servo tuning to operate in that mode.  This is not particularly easy.

Stepper motors typically have high torque ripple and cogging so I wouldn't expect high precision force control.  Also stiction and friction in the ball screw would add to torque errors.


For best results you might replace the Steppers with DC Torque Motors.

HTH
Regards
TK



On 2/22/2016 12:26 PM, cnc_machines@... [DynoMotion] wrote:
 

Greetings,


I am building a gantry which I would like to apply an even pressure all the way across. I am driving it with a ball screw on each end. I want to sync the ball screws to keep the gantry parallel, but also apply pressure (torque to the ball screws). Here is how I am thinking of doing it:


1. Snapamp Driving two steppers with encoders
2. Ball screw 1 driven in torque mode?

3. Ball screw 2 set to follow the position of ball screw 1?


My thinking is the pressure would be applied by the stepper in torque mode, everything would be kept square by the other motor matching its position. 


Would the snapamp be capable of doing this? I see you can configure a master and slave axis, but what I am describing sounds somewhat different. I would appreciate any suggestions - I am not stuck on this idea, but cant think of anything else.


Thanks,


Scott


Group: DynoMotion Message: 12843 From: cnc_machines Date: 2/23/2016
Subject: Re: Gantry Press
Tom,

Thank you for the detailed response. Sounds like steppers are definitely not the way to go. Your suggestion of DC torque motors, I am not familiar with these. Are they basically a brushless DC motor with encoder feedback used for commutation? Any different than a regular servo motor? I see many servo motors can be run in Position, Velocity, or Torque mode.

I could replace the steppers with servos. I would have one servo running in torque mode, and the other following its position

Servo in torque mode:
  • #define AMPLITUDE - set to the value which give an appropriate torque 
  • Set servo to have a large possible following error without faulting.
  •  Jog the axis until we reach a known following error value (maybe where the stator is producing max torque in relation to the windings?)
Other Servo Following
  • Have this servo follow the position of the first, tight PID settings, high current, and low following error
  • This would force the other side of the gantry to the exact position as the tension side
Does this sound feasible? Basically stalling one ballscrew setting at a low torque, and forcing the other side to follow.

Thanks,

Scott
Group: DynoMotion Message: 12846 From: Tom Kerekes Date: 2/23/2016
Subject: Re: Gantry Press
Hi Scott,

By DC torque motor I meant normal DC Brush Motors.  That would be the simplest direction to go using SnapAmp. 

I'm not sure what  you mean by #define AMPLITUDE but to limit the Torque for a DC Servo mode the MaxOutput would be the way to limit the maximum torque.

Your method sounds reasonable.  I'm not sure if there would be a disadvantage of allowing one side unlimited force to follow and the other side limited.  Would your point of resistance always be toward the middle or uniformly distributed?  What are the other characteristics of the resistance?  Would it gradually increase with speed or position?  Or would it be more like hitting a brick wall?

Another approach would be like I stated in my previous email.  Run both motors in position mode with unlimited torque but then change the speed or position based on measured torque from both sides.

Regards
TK

On 2/23/2016 7:49 AM, cnc_machines@... [DynoMotion] wrote:
 

Tom,


Thank you for the detailed response. Sounds like steppers are definitely not the way to go. Your suggestion of DC torque motors, I am not familiar with these. Are they basically a brushless DC motor with encoder feedback used for commutation? Any different than a regular servo motor? I see many servo motors can be run in Position, Velocity, or Torque mode.

I could replace the steppers with servos. I would have one servo running in torque mode, and the other following its position

Servo in torque mode:
  • #define AMPLITUDE - set to the value which give an appropriate torque 
  • Set servo to have a large possible following error without faulting.
  •  Jog the axis until we reach a known following error value (maybe where the stator is producing max torque in relation to the windings?)
Other Servo Following
  • Have this servo follow the position of the first, tight PID settings, high current, and low following error
  • This would force the other side of the gantry to the exact position as the tension side
Does this sound feasible? Basically stalling one ballscrew setting at a low torque, and forcing the other side to follow.

Thanks,

Scott

Group: DynoMotion Message: 12850 From: cnc_machines Date: 2/23/2016
Subject: Re: Gantry Press

 

Tom,

 

I was referring to brushless servo motors. If I understand the example program correctly this line determines the current sent to the motor.


#define AMPLITUDE 10                                 // Set how hard to drive the coils pwm counts


The force would not always be in the center, it could be on one side or the other. The more I think about it seem like a bad idea setting one side to unlimited torque. A non-centered load could have a huge force difference depending on the distance from the unlimited torque side.


I am still digesting your post and have some questions.


“you might create a User program do something like:  Observe the current torques.  If the sum of both motors is below the desired torque increase the current Jog rate by an amount proportional to the torque error.  (This would also slow down if the torque was too high).”

Once the current reaches the desired value, the jogging would stop. Would this apply a constant static pressure? Sounds very interesting – but how does the slave axis work? Is it independently following the axis command signal, or is it matching the position of the master axis? Seems like to build torque you would need a positional error. If the two motors get out of sync we would start twisting the gantry. Does this make sense?


Thanks,


Scott 

Group: DynoMotion Message: 12852 From: Tom Kerekes Date: 2/23/2016
Subject: Re: Gantry Press
Hi Scott,

I believe you copied the #define AMPLITUDE 10 from a SnapAmp Home Brushless example?  That is where the coils are energized with a fixed PWM (voltage) to move much like a stepper motor.  That wouldn't provide any torque control in the same manner as I described with Steppers.

Brushless motors would be more complicated when using SnapAmp.  You need to setup the commutation and a User Program would be required to monitor the coil currents as the Servo Output is basically a voltage.  At very slow speeds Voltage and Current would be proportional so it might work ok.

A simpler way to use Brushless Motors would be to use a 3rd party Analog Amplifier with our Kanalog board that supports torque mode.

I'd first try Master/Slaves in position mode.  Both axes would servo to the same commanded position (although other approaches are possible with User Programs).  Basically the Slave doesn't try to follow where the Master is, but rather both try to be at the same commanded position as best they can.  This should keep the gantry square.  If either or both are out of tolerance you could trigger a following error fault.  Servos don't necessarily have to have error to apply torque.  If you have integral gain then the output will ramp up (and hold) when the error becomes zero.   In fact any servo with I gain will always have zero average error.  You would then advance them both to achieve the total torque level you want.  Although you could simply stop them at the desired torque threshold I would expect it better to have some proportional control where the change in speed or position is determined by the torque error.  Whether the torque remains after stopping would determine on the load.  If the load acts like pushing on a spring then when the axis stops the force would remain.  If the load moves/slips/jumps then the force would drop until you move up to it and began pushing again.

HTH
Regards
TK



On 2/23/2016 11:46 AM, cnc_machines@... [DynoMotion] wrote:
 

 

Tom,

 

I was referring to brushless servo motors. If I understand the example program correctly this line determines the current sent to the motor.


#define AMPLITUDE 10                                 // Set how hard to drive the coils pwm counts


The force would not always be in the center, it could be on one side or the other. The more I think about it seem like a bad idea setting one side to unlimited torque. A non-centered load could have a huge force difference depending on the distance from the unlimited torque side.


I am still digesting your post and have some questions.


“you might create a User program do something like:  Observe the current torques.  If the sum of both motors is below the desired torque increase the current Jog rate by an amount proportional to the torque error.  (This would also slow down if the torque was too high).”

Once the current reaches the desired value, the jogging would stop. Would this apply a constant static pressure? Sounds very interesting – but how does the slave axis work? Is it independently following the axis command signal, or is it matching the position of the master axis? Seems like to build torque you would need a positional error. If the two motors get out of sync we would start twisting the gantry. Does this make sense?


Thanks,


Scott 


Group: DynoMotion Message: 12868 From: cnc_machines Date: 2/26/2016
Subject: Re: Gantry Press
Tom,

I have been looking at the different options, and have access to some load cells I can place on each side of the gantry. Do you think I could go back to the steppers, and then write a user program to monitor the analog input from the load cells? I would stop jogging once a force level (analog input) has been hit?

I would rather not have to buy the Kanalog to monitor one A/D. Would it be possible for me to hook up an A/D directly into one of the KFlop pins? I have done this before with other micro controllers and am wondering if it would also be possible with the KFlop?

Simple Analog to Digital Test | learn.parallax.com

 




Group: DynoMotion Message: 12869 From: TKSOFT Date: 2/26/2016
Subject: Re: Gantry Press
That sounds reasonable to me. You would need to work out the interface
details. There is a bit bang SPI program in the examples.

Regards
TK


On 2016-02-26 12:31, cnc_machines@... [DynoMotion] wrote:
> Tom,
>
> I have been looking at the different options, and have access to some
> load cells I can place on each side of the gantry. Do you think I
> could go back to the steppers, and then write a user program to
> monitor the analog input from the load cells? I would stop jogging
> once a force level (analog input) has been hit?
>
> I would rather not have to buy the Kanalog to monitor one A/D. Would
> it be possible for me to hook up an A/D directly into one of the KFlop
> pins? I have done this before with other micro controllers and am
> wondering if it would also be possible with the KFlop?
>
> Simple Analog to Digital Test | learn.parallax.com [1]
>
> [1]
>
> Simple Analog to Digital Test | learn.parallax.com [1]
> This first example displays the Propeller BOE’s analog to digital
> measurement of the potentiometer’s wiper terminal voltage output.
>
> View on learn.parallax.com [1]